package org.common.convert.util;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
 * html头检查是否有指定字符集，没有补充上
 */
public class HtmlCharsetFixer {


    public static void fixCharsetMeta(String inputPath, String outputPath) throws IOException {
        // 读取HTML文件
        Path path = Paths.get(inputPath);
        String html = FileHelper.readFile(inputPath);
        Document doc = Jsoup.parse(html);

        // 检查是否已存在 <meta charset="utf-8">
        boolean hasCharsetMeta =
                // 检查 <meta charset="utf-8"> 是否存在
                doc.select("meta[charset]").stream()
                        .anyMatch(meta -> "utf-8".equalsIgnoreCase(meta.attr("charset")))
                        ||
                        // 检查 <meta http-equiv="Content-Type"> 中的 charset 声明
                        doc.select("meta[http-equiv=Content-Type]").stream()
                                .anyMatch(meta -> meta.attr("content").toLowerCase().contains("charset=utf-8"));

        // 如果不存在，则插入
        if (!hasCharsetMeta) {
            Element head = doc.head();
            if (head == null) {
                // 如果没有<head>则创建
                head = doc.prependElement("head");
            }

            // 在<head>的最前面插入 <meta charset="utf-8">
            head.prependElement("meta")
                    .attr("charset", "utf-8");
        }

        // 保存修改后的HTML
        FileHelper.writeString(Paths.get(outputPath), doc.html());
    }
}
